home *** CD-ROM | disk | FTP | other *** search
/ Resource for Source: C/C++ / Resource for Source - C-C++.iso / misc_src / knowhow4 / strtable.cpp < prev    next >
C/C++ Source or Header  |  1995-11-01  |  876b  |  38 lines

  1. #include "strtable.h"
  2.  
  3. #define STEP 16                   // Reallocation step
  4. #define LSTEP 4                   // LOG
  5.  
  6. KH_STRTABLE::KH_STRTABLE(int n, char** str)
  7.     {
  8.     strings = (char**)malloc((total = (n >> LSTEP << LSTEP) + STEP)  * sizeof(char**));
  9.     for(int i = 0; i < n; i++)
  10.     {
  11.     if(str == NULL)
  12.         strings[i] = strdup("");
  13.     else
  14.         strings[i] = strdup(str[i]);
  15.     }
  16.     used = n;
  17.     }
  18. ////////////////////////////////
  19. KH_STRTABLE::~KH_STRTABLE()
  20.     {
  21.     for(int i = 0; i < used; i++)
  22.     delete strings[i];
  23.     delete strings;
  24.     }
  25. ////////////////////////////////
  26. int KH_STRTABLE::add(char* str)
  27.     {
  28.     if(used + 1 > total)
  29.     {
  30.     strings = (char**)realloc(strings, (total + STEP)  * sizeof(char**));
  31.     total += STEP;
  32.     }
  33.     strings[used] = strdup(str);
  34.     used++;
  35.     return used;
  36.     }
  37. ////////////////////////////////
  38.